/**
 * \addtogroup TVOut TV Out API
 * @{
 *  This file specifies the Samsung TV Out API for Windows Mobile 
 *  devices.
 *
 *  The TV Out API controls video output provided by a phone's 
 *  analog video signal connector.  The interface allows the
 *  application to change brightness, contrast, and video quality.
 *
 *  The specific features of the TV Out values vary from device to device.
 *  These are not specified by the Samsung TV Out API. Please refer to
 *  device-specific documentation for these details.
 *
 * Copyright &copy; 2009 Samsung Electronics
 *   
 * File: smiTVOut.h
 */

#ifndef _SMI_TVOUT_H_
#define _SMI_TVOUT_H_

#include <smiSDK.h>

/**
 *  TV Out contrast levels.
 *
 */
typedef enum {
	SMI_TVOUT_CONTRAST_LOW      ,
	SMI_TVOUT_CONTRAST_MEDIUM   ,
	SMI_TVOUT_CONTRAST_HIGH
} SmiTVOutContrast;

/**
 *  TV Out brightness levels.
 *
 */

typedef enum {
	SMI_TVOUT_BRIGHTNESS_LOW    ,
	SMI_TVOUT_BRIGHTNESS_MEDIUM ,
	SMI_TVOUT_BRIGHTNESS_HIGH   
} SmiTVOutBrightness;

/**
 *  TV Out video quality.
 *
 */

typedef enum {
	SMI_TVOUT_VIDEO_QUALITY_SOFT    ,
	SMI_TVOUT_VIDEO_QUALITY_NATURAL ,
	SMI_TVOUT_VIDEO_QUALITY_SHARP   
} SmiTVOutVideoQuality;


/**
 *  Gets the device's current contrast level.
 * 
 *  @param contrast [out]		Pointer to the contrast level of the device.
 *
 *  @return 
 *                              SMI_SUCCESS on success
 * \n							SMI_ERROR_INVALID_PARAMETER if the input parameter is NULL
 * \n							SMI_ERROR_DEVICE_NOT_FOUND if the device is not present or supported
 * \n							SMI_ERROR_UNKNOWN for all other failures
 */ 
SMI_API SMI_RESULT SmiTVOutGetContrast(SmiTVOutContrast *contrast);

/**
 *  Sets the device's contrast level.
 * 
 *  @param contrast [in]		Contrast level of the device.
 *
 *  @return 
 *                              SMI_SUCCESS on success
 * \n							SMI_ERROR_INVALID_PARAMETER if the input parameter is invalid
 * \n							SMI_ERROR_DEVICE_NOT_FOUND if the device is not present or supported
 * \n							SMI_ERROR_UNKNOWN for all other failures
 */ 
SMI_API SMI_RESULT SmiTVOutSetContrast(SmiTVOutContrast contrast);

/**
 *  Gets the device's current brightness level.
 * 
 *  @param brightness [out]		Pointer to the brightness level of the device.
 *
 *  @return 
 *                              SMI_SUCCESS on success
 * \n							SMI_ERROR_INVALID_PARAMETER if the input parameter is NULL
 * \n							SMI_ERROR_DEVICE_NOT_FOUND if the device is not present or supported
 * \n							SMI_ERROR_UNKNOWN for all other failures
 */ 
SMI_API SMI_RESULT SmiTVOutGetBrightness(SmiTVOutBrightness *brightness);

/**
 *  Sets the device's brightness level.
 * 
 *  @param brightness [in]		Brightness level of the device.
 *
 *  @return 
 *                              SMI_SUCCESS on success
 * \n							SMI_ERROR_INVALID_PARAMETER if the input parameter is invalid
 * \n							SMI_ERROR_DEVICE_NOT_FOUND if the device is not present or supported
 * \n							SMI_ERROR_UNKNOWN for all other failures
 */ 
SMI_API SMI_RESULT SmiTVOutSetBrightness(SmiTVOutBrightness brightness);

/**
 *  Gets the device's current video quality.
 * 
 *  @param quality [out]		Pointer to the video quality of the device.
 *  @return 
 *                              SMI_SUCCESS on success
 * \n							SMI_ERROR_INVALID_PARAMETER if the input parameter is NULL
 * \n							SMI_ERROR_DEVICE_NOT_FOUND if the device is not present or supported
 * \n							SMI_ERROR_UNKNOWN for all other failures
 */ 
SMI_API SMI_RESULT SmiTVOutGetVideoQuality(SmiTVOutVideoQuality *quality);

/**
 *  Sets the device's video quality.
 * 
 *  @param quality [in]			Video quality level of the device.
 *  @return 
 *                              SMI_SUCCESS on success
 * \n							SMI_ERROR_INVALID_PARAMETER if the input parameter is invalid
 * \n							SMI_ERROR_DEVICE_NOT_FOUND if the device is not present or supported
 * \n							SMI_ERROR_UNKNOWN for all other failures
 */ 
SMI_API SMI_RESULT SmiTVOutSetVideoQuality(SmiTVOutVideoQuality quality);


#endif /* _SMI_TVOUT_H_ */
/* @} */
